
系列:30 天打造企業級 PLM|面向:遷移|素材:資料遷移專案(來源表名一律匿名化,本篇只講方法論)
系統做好了,最難的一步才開始:Agile 裡躺著十幾年的料號、BOM 與變更歷史,要搬進新家。而現實是手上沒有完整的 schema 文件,當年知道細節的人也不在了,只有一個能連的資料庫帳號。這不是寫程式的問題,是考古的問題。Migration 篇分上下兩天,今天講策略與考古方法,明天講匯出工具的工程化。
Oracle Agile PLM 運行十幾年後,資料庫通常會演變成一個「誰都不敢碰」的龐大黑箱:
SRC_EXT_VALUE)、深層的 Node/Class 階層 ID,以及非標準的 List ID 代碼;Mini-PLM 團隊採用專用 Staging DB 交付架構配合嚴格的資料考古方法論,在舊庫與新系統之間架設一道標準化緩衝層:
巨量遷移工具還是標準 Loader?目標系統的標準匯入介面(Day 26 的批次匯入)適合十萬筆以下;百萬筆等級要走直寫 Staging 的專用通道,分水嶺是逐筆走業務驗證的成本。
Staging DB 作為交付介面,中間隔一層的價值有三:匯出與匯入解耦(兩邊可獨立重跑)、對帳有明確基準點(Staging 的筆數就是雙方簽收的數字)、資料清洗有落腳處。
[舊 PLM] --匯出工具--> [Staging DB] --匯入通道--> [Mini-PLM]
↑ 對帳點 1 ↑ 對帳點 2
方法論四步,全部不依賴文件。
在舊系統畫面上改一個值,然後在資料庫裡找哪張表跟著變(比對 update timestamp 或 trigger log)。一天下來就能畫出畫面區塊對資料表的對照草圖:品項主檔在 SRC_PART、版本在 SRC_REVISION、動態擴充欄位集中在一張直立式的 SRC_EXT_VALUE。UI 是最誠實的文件,使用者看得到的每個欄位,資料庫裡一定有家。
對每個品項類型(舊系統叫 subclass)跑筆數統計:37 種類型、其中 9 種佔了 98% 的資料、有 11 種十年沒新增過。這張統計表就是給業務拍板的勾選清單雛形。筆數是最便宜的考古工具,它立刻告訴你哪些角落是主戰場、哪些是遺跡。
對照草圖是假設,抽樣是驗證:每張表抽幾十筆,逐欄位問「這一欄存的真的是我以為的東西嗎」。實戰教訓是同名欄位不同語意:同一個欄位在不同品項類型下存不同的東西,A 類型存重量、B 類型被挪用存包裝方式。這種欄位挪用是老系統的常態,只有抽樣抓得到。
抽取邏輯寫好後,挑 20 筆代表性資料,SQL 撈出來的值逐欄與舊系統畫面比對。「最新已發行版本」的判定邏輯(狀態欄位加排序規則的組合)就是這樣校準出來的。業務說的「現在有效的版本」和資料庫的狀態欄位不一定是同一件事,定義要先在對帳中收斂,才輪得到寫批次 SQL。
版本快照的核心概念也在此定案:變更單的生效與失效紀錄(change-in / change-out)決定每筆結構在哪一版存在。BOM 與 AML 共用同一套快照規則,因為它們在來源系統裡走同一種變更機制。
範圍是商業決策,Staging 是解耦與對帳的支點,考古就是 UI 反推、筆數統計、抽樣、畫面對帳這四步不斷循環。明日 Day 24(下):匯出工具的工程化——可暫停續跑的批次任務與資料轉換。